package jmine.tec.batch.issue;

import bancosys.tec.exception.LocalizedMessageHolder;
import bancosys.tec.exception.MessageHolder;

/**
 * Classe abstrata com métodos básicos para pendências de um elemento.
 * 
 * @author Cesar Olmos
 */
public abstract class AbstractIssue implements Issue {

    private final LocalizedMessageHolder messageHolder;

    /**
     * Construtor.
     * 
     * @param key a chave da mensagem descrevendo a pendência.
     * @param arguments argumentos da mensagem, se houver.
     * @deprecated use LocalizedMessageHolder
     */
    @Deprecated
    public AbstractIssue(String key, final Object... arguments) {
        this.messageHolder = new MessageHolder(this.getBundleBaseName(), key, arguments);
    }

    /**
     * Constructor
     * 
     * @param messageHolder messageHolder
     */
    public AbstractIssue(LocalizedMessageHolder messageHolder) {
        super();
        this.messageHolder = messageHolder;
    }

    /**
     * Devolve uma mensagem descrevendo a pendência.
     * 
     * @return uma mensagem descrevendo a pendência.
     */
    public String getMessage() {
        return this.messageHolder.getMessage();
    }

    /**
     * Retorna o nome do arquivo de i18n que deve ser usado para localizar a mensagem. Este arquivo será procurado no classpath.
     * 
     * @return String
     */
    public String getBundleBaseName() {
        throw new UnsupportedOperationException();
    }

    /**
     * @return the messageHolder
     */
    public LocalizedMessageHolder getMessageHolder() {
        return this.messageHolder;
    }
}
